package com.example.jwtauthdemo.mapper;


import com.example.jwtauthdemo.model.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.Map;
import java.util.Optional;

@Mapper
public interface UserMapper {

    /**
     * 根据用户名查询用户
     * @param username 用户名
     * @return 用户信息
     */
    Optional<User> findByUsername(@Param("username") String username);

    /**
     * 检查用户名是否存在
     * @param username 用户名
     * @return 是否存在
     */
    boolean existsByUsername(@Param("username") String username);

    /**
     * 保存用户
     * @param user 用户信息
     * @return 影响行数
     */
    int save(User user);

    /**
     * 根据ID查询用户
     * @param id 用户ID
     * @return 用户信息
     */
    Optional<User> findById(@Param("id") Long id);

    /**
     * 更新用户信息
     * @param user 用户信息
     * @return 影响行数
     */
    int update(User user);

    /**
     * 删除用户
     * @param id 用户ID
     * @return 影响行数
     */
    int deleteById(@Param("id") Long id);
    
    /**
     * 查询用户实名认证状态
     * @param id 用户ID
     * @return 包含isVerified字段的Map
     */
    @Select("SELECT CASE WHEN (real_name IS NOT NULL AND real_name != '') AND (id_card IS NOT NULL AND id_card != '') THEN TRUE ELSE FALSE END AS is_verified FROM user WHERE id = #{id}")
    Map<String, Object> getRealNameAuthStatus(@Param("id") Long id);
}